﻿<?php

//这个地方要引入下面要用到的类
require_once '../aop/AopClient.php';
require_once '../aop/request/AlipayTradeAppPayRequest.php';

header('Access-Control-Allow-Origin:*');
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
header('Access-Control-Allow-Headers:x-requested-with,content-type');

//上面的三个header解决客户端post跨域问题


$json=file_get_contents("php://input") ;
$array = json_decode($json,true);
$price = $array['price'];
$desciption = $array['description'];

$aop = new AopClient;
//这里是网关，下面这个网关是正式环境的，等会配置沙箱测试环境的时候会换一个网关
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
//填写appid，在应用的头上面有
$aop->appId = "应用ID";//
//这个地方填写私钥，就是我们在上面用工具生成的私钥，这个私钥必须是和上传到支付宝的公钥匹配，不让，支付宝访问的时候会匹配错误
$aop->rsaPrivateKey = '私匙';
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
//这个地方的公钥也是一样，必须是上传到支付宝的那个公钥要一样
$aop->alipayrsaPublicKey = '支付宝公匙';
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称：alipay.trade.app.pay
$request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数，这里只需要传入业务参数
$trade_no = order();
$bizcontent = "{\"body\":\"$desciption\","//这个地方写一些参数，在弹出支付的时候会显示
                . "\"subject\": \"$desciption\","//这个可以进行支付的一些描述
                . "\"out_trade_no\": \"$trade_no\","//订单号，必须是唯一的，等会我会给一个生成订单号的函数，
                . "\"timeout_express\": \"30m\","
                . "\"total_amount\": \"$price\","
                . "\"product_code\":\"QUICK_MSECURITY_PAY\""
                . "}";
$request->setNotifyUrl("http://www.xxxxxxxx.com/Alipay/pay/notify.php"); //回调地址
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同，使用的是sdkExecute
$response = $aop->sdkExecute($request);
//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义，实际打印到日志以及http传输不会有这个问题
echo htmlspecialchars($response);//就是orderString 可以直接给客户端请求，无需再做处理。

function order()
{
    $yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
    $orderSn = $yCode[intval(date('Y')) - 2012] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));
    return $orderSn;
}//随机生成订单号
?>